package pers.xiaojun.boot.file.core.client.s3;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.URL;
import pers.xiaojun.boot.file.core.client.FileClientConfig;

/**
 * S3存储配置
 *
 * @author xiaojun
 * @since 2025-11-13
 */
@Data
public class S3FileClientConfig implements FileClientConfig {
    /**
     * 节点地址
     */
    @NotNull(message = "endpoint 不能为空")
    private String endpoint;

    /**
     * 基础路径
     */
    @NotEmpty(message = "基础路径不能为空")
    private String basePath;

    /**
     * 自定义域名
     */
    @NotEmpty(message = "domain 不能为空")
    @URL(message = "domain 必须是 URL 格式")
    private String domain;

    /**
     * 存储 Bucket
     */
    @NotNull(message = "bucket 不能为空")
    private String bucket;


    @NotNull(message = "accessKey 不能为空")
    private String accessKey;
    /**
     * 访问 Secret
     */
    @NotNull(message = "accessSecret 不能为空")
    private String accessSecret;

    /**
     * 是否启用 PathStyle 访问
     */
    @NotNull(message = "enablePathStyleAccess 不能为空")
    private Boolean enablePathStyleAccess;

    /**
     * 是否公开访问
     */
    @NotNull(message = "enablePublicAccess 不能为空")
    private Boolean enablePublicAccess;


}
